package com.yunxin.core.wechat.domain;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import java.io.Serializable;
import java.util.Date;

import com.yunxin.core.wechat.enumpack.AddWayEnum;
import io.swagger.v3.oas.annotations.media.Schema;
import jakarta.validation.constraints.NotNull;
import lombok.Data;

/**
 * 企业用户关联客户信息
 * @TableName wechat_follow_customer
 */
@TableName(value ="wechat_follow_customer")
@Data
public class WechatFollowCustomer implements Serializable {
    /**
     * 主键
     */
    @TableId(type = IdType.AUTO)
    private Long id;

    /**
     * 用户编号
     */
    private String customerNo;

    /**
     * 客户微信号 external_userid
     */
    private String externalUserid;

    /**
     * 外部联系人的类型，1表示该外部联系人是微信用户，2表示该外部联系人是企业微信用户
     */
    private Integer wechatType;

    /**
     * 微信昵称
     */
    private String wechatName;

    /**
     * 微信最后一次聊天时间
     */
    private Date wechatLastTime;

    /**
     * 添加了此外部联系人的企业成员userid
     */
    private String wechatUserId;

    /**
     * 该成员对此外部联系人的备注
     */
    private String remark;

    /**
     * 该成员对此外部联系人的描述
     */
    private String description;

    /**
     * 该成员对此微信客户备注的企业名称（仅微信客户有该字段）
     */
    private String remarkCorpName;

    /**
     * 该成员添加此外部联系人的时间 时间戳
     */
    private Long wechatCreatetime;

    /**
     * 该成员添加此客户的来源
     */
    private Integer addWay;
    //该成员添加此客户的来源Str
    @TableField(exist = false)
    private String addWayStr;

    /**
     * 发起添加的userid，如果成员主动添加，为成员的userid；如果是客户主动添加，则为客户的外部联系人userid；如果是内部成员共享/管理员分配，则为对应的成员/管理员userid
     */
    private String operUserid;

    //微信企业标签集合
    private Object wechatTagIds;

    /**
     * 标识删除 0.存在 1.删除
     */
    private Integer isDel;

    /**
     * 创建人
     */
    private String creator;

    /**
     * 修改人
     */
    private String editor;

    /**
     * 创建时间
     */
    private Date createTime;

    /**
     * 更新时间
     */
    private Date editTime;

    /**
     * 版本号
     */
    private Long version;

    //流失客户类型 1跟进人删除  2客户删除跟进人 3未知流失
    private Integer runType;

    /**
     * 流失客户来源
     */
    private String runSource;

    /**
     * 客户流失时间
     */
    private Long runTime;

    //系统客户id
    private Integer sysUserId;

    //微信企业id
    private Long wechatInfoId;
    //团队id
    private Integer teamId;
    //添加好友 0:未同意 1同意
//    private Integer addStatus;
    //微信头像
    private String wechatAuatar;
    //微信性别  0-未知 1-男性 2-女性
    private Integer wechatGender;
    //微信Unionid
    private String wechatUnionid;
    //微信备注手机号
    private Object wechatRemarkMobiles;
    //跟进状态
    private Integer followStatus;
    //成单时间
    private Date makeOrderTime;




    @TableField(exist = false)
    private static final long serialVersionUID = 1L;

    public void setAddWay(Integer addWay) {
        this.addWay = addWay;
        this.addWayStr= AddWayEnum.getLabelByValue(addWay);
    }
}